<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    //1.重复声明
    var a=1
    var a=1
    /* let a = 1
    let a = 2 */
    /* function fun(a){
      let a=1
    } */
    //2.变量提升
    //var会提升变量的声明到当前作用域的顶部
    console.log(b);
    var b=2;
    console.log(b);
    //let和const不存在变量提升
    //养成良好的编程习惯，对于所有的变量，坐到先声明，后赋值
    //3.暂时性死区
    //只要作用域内存在let const，它们所声明的变量，就自动绑定这个区域，不再受外部作用域的影响
    let c=1
    let d=2
    function fun(){
      let c=2
      console.log(c);
    }
    fun()
    //4.winodw对象的属性和方法
    var e=1
    function fun1(){

    }
    console.log(e===window.e);
    console.log(fun1===window.fun1);
    let h=1
    console.log(h===window.h);
    //5.块级作用域
    //if switch for while dowhile {} function
    //作用域链嵌套 会逐层寻找变量
  </script>
</body>

</html>